#!/bin/bash

a=10
b=20
echo "a=${a}"
echo "b=${b}"

echo "\n================= ↓↓↓↓↓↓ 算术运算符 ↓↓↓↓↓↓ ================="

echo "a + b : `expr ${a} + ${b}`"
echo "a - b : `expr ${a} - ${b}`"
echo "a * b : `expr ${a} \* ${b}`"
echo "b / a : `expr ${b} / ${a}`"
echo "b % a : `expr ${b} % ${a}`"

if [ ${a} == ${b} ]
then
   echo "a 等于 b"
fi

if [ ${a} != ${b} ]
then
   echo "a 不等于 b"
fi


echo "\n================= ↓↓↓↓↓↓ 关系运算符 ↓↓↓↓↓↓ ================="

if [ ${a} -eq ${b} ]
then
   echo "${a} -eq ${b} : a 等于 b"
else
   echo "${a} -eq ${b}: a 不等于 b"
fi

if [ ${a} -ne ${b} ]
then
   echo "${a} -ne ${b}: a 不等于 b"
else
   echo "${a} -ne ${b} : a 等于 b"
fi

if [ ${a} -gt ${b} ]
then
   echo "${a} -gt ${b}: a 大于 b"
else
   echo "${a} -gt ${b}: a 不大于 b"
fi

if [ ${a} -ge ${b} ]
then
   echo "${a} -ge ${b}: a 大于或等于 b"
else
   echo "${a} -ge ${b}: a 小于 b"
fi

if [ ${a} -lt ${b} ]
then
   echo "${a} -lt ${b}: a 小于 b"
else
   echo "${a} -lt ${b}: a 不小于 b"
fi

if [ ${a} -le ${b} ]
then
   echo "${a} -le ${b}: a 小于或等于 b"
else
   echo "${a} -le ${b}: a 大于 b"
fi


echo "\n================= ↓↓↓↓↓↓ 布尔运算符 ↓↓↓↓↓↓ ================="

if [ ${a} != ${b} ]
then
   echo "${a} != ${b} : a 不等于 b"
else
   echo "${a} == ${b}: a 等于 b"
fi

if [ ${a} -lt 100 -a ${b} -gt 15 ]
then
   echo "${a} 小于 100 且 ${b} 大于 15 : 返回 true"
else
   echo "${a} 小于 100 且 ${b} 大于 15 : 返回 false"
fi

if [ ${a} -lt 100 -o ${b} -gt 100 ]
then
   echo "${a} 小于 100 或 ${b} 大于 100 : 返回 true"
else
   echo "${a} 小于 100 或 ${b} 大于 100 : 返回 false"
fi

if [ ${a} -lt 5 -o ${b} -gt 100 ]
then
   echo "${a} 小于 5 或 ${b} 大于 100 : 返回 true"
else
   echo "${a} 小于 5 或 ${b} 大于 100 : 返回 false"
fi


echo "\n================= ↓↓↓↓↓↓ 逻辑运算符 ↓↓↓↓↓↓ ================="

if [[ ${a} -lt 100 && ${b} -gt 100 ]]
then
   echo "${a} 小于 100 并且 ${b} 大于 100 : 返回 true"
else
   echo "${a} 小于 100 并且 ${b} 大于 100 : 返回 false"
fi

if [[ ${a} -lt 100 || ${b} -gt 100 ]]
then
   echo "${a} 小于 100 或者 ${b} 大于 100 : 返回 true"
else
   echo "${a} 小于 100 或者 ${b} 大于 100 : 返回 false"
fi


echo "\n================= ↓↓↓↓↓↓ 字符串运算符 ↓↓↓↓↓↓ ================="

a="abc"
b="efg"
echo "a=${a}"
echo "b=${b}"

if [ ${a} = ${b} ]
then
   echo "${a} = ${b} : a 等于 b"
else
   echo "${a} = ${b}: a 不等于 b"
fi

if [ ${a} != ${b} ]
then
   echo "${a} != ${b} : a 不等于 b"
else
   echo "${a} != ${b}: a 等于 b"
fi

if [ -z ${a} ]
then
   echo "-z ${a} : 字符串长度为 0"
else
   echo "-z ${a} : 字符串长度不为 0"
fi

if [ -n "${a}" ]
then
   echo "-n ${a} : 字符串长度不为 0"
else
   echo "-n ${a} : 字符串长度为 0"
fi

if [ ${a} ]
then
   echo "${a} : 字符串不为空"
else
   echo "${a} : 字符串为空"
fi


echo "\n================= ↓↓↓↓↓↓ 文件测试运算符 ↓↓↓↓↓↓ ================="

file="./test.sh"
echo "文件路径: ${file}"

if [ -r ${file} ]
then
   echo "文件可读"
else
   echo "文件不可读"
fi

if [ -w ${file} ]
then
   echo "文件可写"
else
   echo "文件不可写"
fi

if [ -x ${file} ]
then
   echo "文件可执行"
else
   echo "文件不可执行"
fi

if [ -f ${file} ]
then
   echo "文件为普通文件"
else
   echo "文件为特殊文件"
fi

if [ -d ${file} ]
then
   echo "文件是个目录"
else
   echo "文件不是个目录"
fi

if [ -s ${file} ]
then
   echo "文件不为空"
else
   echo "文件为空"
fi

if [ -e ${file} ]
then
   echo "文件存在"
else
   echo "文件不存在"
fi
